#include<stdio.h>
main()
{
    int a,b,c,d;
    a=10;
    b=a++;
    c=++a;
    printf("a: %d \n", a);
    //d=10*a++;//自增的优先级要高于乘号，但后缀自增的规则决定，返回值为自增前的值
    d=10*++a;
    //d=10*(a++);
    printf("b, c, d: %d, %d, %d \n", b, c, d);
    a = 0;
    a = (++a)+(++a)+(++a)+(++a);//不同编译器会给出不同的值，i686-apple-darwin11-llvm-gcc-4.2给出的是11
    printf("a: %d \n", a);
    //a = a++ ++ +b;//++运算符要求操作数能做左值，a能做左值所以a++没问题，但表达式a++的值只能做右值，不能再++了，所以最终编译器会报错。
    printf("a: %d \n", a);
    int i = 1;
    int arr[5] = {0,0,0,0,0};
    i = ++i + 1;
    //arr[i++] = i;
    arr[++i] = i;
    printf("i: %d \n", i);
    int n = 0;
    for ( n = 0; n < 5; n++ )
    {
        printf ("%d ", arr[n]);
    }
    printf ("\n");
    return 0;
}
